Cargamos las librerias:

library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)
library(RColorBrewer)

Carga de los datos para la elaboración y asignación de sistema de referencia.

# Carga de datos de primates

primates <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ), 
    quiet = TRUE
  )
# Carga geoespacial de cantones

cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )
# Carga geoespacial de provincias

provincias <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
    quiet = TRUE
  )
# Asignación de CRS

st_crs(cantones) = 4326
st_crs(primates) = 4326
# Cruce espacial con la tabla de cantones, para obtener de esta forma el nombre del canton

primates <- 
  primates %>%
  st_join(cantones["canton"])
# Suma de las especies para creación del gráfico de pastel más adelante

suma_especies <- primates %>% count(species)

Introducción

En este trabajo vamos a crear un gráfico, una tabla, y un mapa con los datos de los primates en Costa Rica, con el fin de visualizarlos de mejor manera.

Tabla de registro de presencia de primates en Costa Rica

primates %>%
  st_drop_geometry() %>%
  dplyr::select(family, species, stateProvince, canton, eventDate) %>%
  datatable(
    colnames = c("Familia", "Especie", "Provincia", "Cantón", "Fecha"),
    options = list(searchHighlight = TRUE,
    language = list(url =
                      '//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json'),
    pageLength = 10))

Creación de gráfico de pastel

# Se crea la data con el total de especies

data <- suma_especies [, c('species', 'n')]

# Creación del gráfico


fig <- plot_ly(data,
               labels = ~ species,
               values = ~ n,
               type = 'pie')
fig <-
  fig %>% config(locale = "es")%>%
  layout(
    title = 'Cantidad de registros de especies de primates en Costa Rica',
    xaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ),
    yaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    )
  )

fig 

Creación del mapa con leaflet

alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)
altitud <- crop(alt, extent(-86, -82.3, 8, 11.3))
altitud <-
  alt %>%
  crop(provincias) %>%
  mask(provincias)
primates %>%
  dplyr::select(
    family,
    species,
    stateProvince,
    canton,
    eventDate,
    decimalLongitude,
    decimalLatitude
  ) %>%
  leaflet() %>%
  addRasterImage(
    altitud,
    opacity = 0.8,
    col = brewer.pal(11, "RdBu"),
    group = "Altitud"
  ) %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 3,
    fillColor = '#154360',
    fillOpacity = 1,
    popup = paste(
      primates$stateProvince,
      primates$canton.y,
      primates$eventDate,
      primates$decimalLongitude,
      primates$decimalLatitude,
      sep = '<br/>'
    ),
    group = "primates"
  ) %>%
      addLayersControl(
        baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
        overlayGroups = c("primates", "Altitud")
      ) %>%
      addMiniMap(
        tiles = providers$Stamen.OpenStreetMap.Mapnik,
        position = "bottomleft",
        toggleDisplay = TRUE
      )